<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class User_lib 
{
	protected $ci;
	protected $status;
	
	public function __construct()
	{
		$this->ci =& get_instance();
		$this->ci->load->library('session');
		$this->ci->load->model('user_model');
		$this->ci->load->helper('cookie');
	}
	
	/**
	 * User_model에 있는 함수는 바로 실행
	 */
	public function __call($method, $arguments)
	{
		if (!method_exists( $this->ci->user_model, $method) )
		{
			throw new Exception('Undefined method User_lib::' . $method . '() called');
		}

		return call_user_func_array( array($this->ci->user_model, $method), $arguments);
	}
	
	/**
	 * 로그인 여부 확인
	 * @return bool
	 */
	public function is_logged_in()
	{
		return (bool) $this->ci->session->userdata('user_id');
	}
	
	/**
	 * 현재 로그인한 사용자가 관리자인지 확인
	 * @return bool
	 */
	public function is_admin()
	{
		return $this->ci->session->userdata('is_admin') === '1';
	}
	
	/**
	 * 현재 로그인한 사용자
	 * @return object 
	 */
	public function get_current_user()
	{
		if($id = $this->ci->session->userdata('user_id'))
		{
			return $this->get_user_by_id($id);
		}
		return false;
	}
	
	/**
	 * 현재 로그인한 사용자 id만 리턴
	 * @return int
	 */
	public function get_current_user_id()
	{
		return $this->ci->session->userdata('user_id');
	}
	
	/**
	 * 로그아웃
	 */
	public function logout()
	{
		$this->ci->session->unset_userdata('user_id');
		$this->ci->session->unset_userdata('username');
		$this->ci->session->unset_userdata('is_admin');
		$this->ci->session->sess_destroy();
		return TRUE;
	}
}
